﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Collections;
using Proxy;
using System.Web.Services;
using System.Text;
using SIM.Util;

namespace SIM.Geo.UI.Seguridad
{
    public partial class frmLogueo : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.btnIngresar.Visible = false;
                this.ddlPerfil.Visible = false;
                this.lblPerfil.Visible = false;
            }
        }

        protected void btnIngresar_Click(object sender, EventArgs e)
        {
            try
            {
                this.lbl_mensaje.Text = string.Empty;

                var usuario = (UsuarioResponse)Session[Sesiones.USUARIO];
                if (usuario == null)
                {
                    this.lbl_mensaje.Text = "No se ha encontrado el usuario, vuelva a ingresar el usuario.";
                    return;
                }

                //Obtengo nuevamente el usuario según el perfil seleccionado
                using (var proxy = new SEUsuarioClient("BasicHttpBinding_ISEUsuario"))
                {
                    usuario = proxy.ObtenerUsuarioPerfil(this.txt_Usuario.Text, int.Parse(this.ddlPerfil.SelectedValue));
                    if (usuario == null)
                    {
                        this.lbl_mensaje.Text = "No se ha encontrado la configuración de perfil del usuario.";
                        return;
                    }
                }
                //Asigno a la session
                Session[Sesiones.USUARIO] = usuario;

                Response.Redirect("../Geo/frmSondaje1.aspx", false);
            }
            catch (Exception ex)
            {
                this.lbl_mensaje.Text = MSG_ERROR_LOGUEO;
                Logger.Error("frmLogueo:btnLogin_Click", ex);
            }
        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                //Valida el logueo de usuario y trae los perfiles de usuario
                this.lbl_mensaje.Text = string.Empty;

                UsuarioResponse usuario = null;
                using (var proxy = new SEUsuarioClient("BasicHttpBinding_ISEUsuario"))
                {
                    usuario = proxy.ValidarAcceso(this.txt_Usuario.Text, this.txt_Contrasenia.Text);
                    if (usuario == null)
                    {
                        this.lbl_mensaje.Text = "No se ha encontrado el usuario o el Password es Incorrecto.";
                        return;
                    }
                }

                this.ddlPerfil.DataSource = usuario.Perfiles;
                this.ddlPerfil.DataTextField = "Descripcion";
                this.ddlPerfil.DataValueField = "CodigoPerfil";
                this.ddlPerfil.DataBind();
                this.ddlPerfil.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));

                if (string.IsNullOrEmpty(usuario.CodigoTrabajador))
                    this.lbl_mensaje.Text = "El usuario no tiene Trabajador Configurado.";

                Session[Sesiones.USUARIO] = usuario;

                this.txt_Usuario.Enabled = false;
                this.txt_Usuario.CssClass = CSS_INPUT_DISABLED;

                this.txt_Contrasenia.Enabled = false;
                this.txt_Contrasenia.CssClass = CSS_INPUT_DISABLED;

                this.btnIngresar.Visible = true;
                this.ddlPerfil.Visible = true;
                this.lblPerfil.Visible = true;
                this.btnLogin.Visible = false;
            }
            catch (Exception ex)
            {
                this.lbl_mensaje.Text = MSG_ERROR_LOGUEO;
                Logger.Error("frmLogueo:btnLogin_Click", ex);
            }
        }
    }
}